/** Merge Sort 归并排序 **/

#include<bits/stdc++.h>
using namespace std;
int n;
const int maxn = 100000+7;
int a[maxn], tmp[maxn];

void merge_sort(int l, int r) {
  if(l>=r) return;
  int mid = l+r>>1;
  merge_sort(l, mid);
  merge_sort(mid+1, r);

  int i=l, j=mid+1, k=l;
  while(i<=mid && j<=r) {
    if(a[i]<=a[j]) {
      tmp[k++] = a[i++];
    }
    else {
      tmp[k++] = a[j++];
    }
  }
  while(i<=mid) tmp[k++] = a[i++];
  while(j<=r) tmp[k++] = a[j++];
  // memcpy(a+l, tmp+l, r-l+1);
  for(int i=l; i<=r; ++i) a[i] = tmp[i];
}
int main() {
  cin>>n;
  for(int i=0; i<n; ++i) cin>>a[i];
  merge_sort(0, n-1);

  for(int i=0; i<n; ++i) cout<<a[i]<<' ';
  cout<<endl;
}